振动抑制功能使用说明文档

修订日期 修订版本 修订内容 修订人
2025.06.17 V0.1 接口介绍和使用方法 高振宇

[TOC]

1. 接口介绍

/**
 * @brief 计算振动抑制整形后的离线轨迹
 * @param level: 振动抑制等级(1~3), 等级越高抑制效果越明显响应速度相应变慢
 * @param calib_traj: 辨识轨迹, 具体为实际速度、参考位置、速度、加速度
 * @param shape_traj: 整形轨迹, 具体为指令位置、指令速度
 * @return if < 0 计算失败
 */
   ARAL_API_COMMON(1.0) int mcCalVibSuppressShapeTraj(const int& level, const DoubleVecVec& calib_traj, DoubleVecVec& shape_traj) = 0;

适用范围:

  • 目前支持关节空间轨迹整形,输出的也是关节空间指令(笛卡尔空间轨迹整形后续支持)
  • 对参考速度要求有稳态段,

2. 使用步骤

S1:真机运行辨识轨迹,采集存储实际速度、参考位置、速度、加速度(规划器给出)数据

S2:调用mcCalVibSuppressShapeTraj接口输入S1存储的数据,计算整形后的轨迹并存储

S3:真机离线运行S2输出的整形轨迹

示例

    TEST_FIXTURE(AuboRobotInterface, testmcCalVibSuppressShapeTraj)
    {
        Setup("aubo_i5");

        S1: //! 数据读取
        interface::DoubleVecVec calib_data, shape_data;
        ReadFromFile2D("./test/data/control/calib_data.csv", ",", calib_data); // cur_vel, ref_pos, ref_vel, ref_acc

        S2: //! 计算输出
        int        N   = calib_data.size();
        const int& dof = robot->mdlGetRobotDOF();
        interface::DoubleVecVec input(N), output(N);
        for (int i = 0; i < N; i++)
        {
            input[i].resize(4 * dof);
            for (int j = 0; j < dof; j++)
            {
                input[i][j]           = calib_data[i][j];
                input[i][j + dof]     = calib_data[i][j + dof];
                input[i][j + dof * 2] = calib_data[i][j + dof * 2];
                input[i][j + dof * 3] = calib_data[i][j + dof * 3];
            }
        }
        robot->mcCalVibSuppressShapeTraj(3, input, output);

        S3: //! 存储整形轨迹
        WriteToFile2D(output, "build/shape_traj.offt");

3. 测试报告

results matching ""

    No results matching ""